Python ব্যবহার করে একটি Basic Blockchain তৈরি করা

Latest Technologies - ব্লকচেইন (Blockchain) - প্র্যাকটিস প্রোজেক্টস | NCTB BOOK

Python ব্যবহার করে একটি basic blockchain তৈরি করা একটি চমৎকার প্র্যাকটিস প্রোজেক্ট। এই প্রোজেক্টের মাধ্যমে আপনি blockchain-এর মৌলিক ধারণা, যেমন ব্লক তৈরি, মাইনিং, এবং consensus mechanism ইত্যাদি সম্পর্কে জানতে পারবেন। নিচে একটি basic blockchain তৈরির জন্য একটি স্টেপ-বাই-স্টেপ কোড উদাহরণ দেওয়া হলো।

Basic Blockchain তৈরির জন্য Python কোড

প্রথমে, আমরা hashlib এবং datetime মডিউল ব্যবহার করবো ব্লকের hash এবং timestamp তৈরি করতে।

import hashlib
import datetime

# ব্লক ডিফাইন করার জন্য একটি ক্লাস তৈরি করা হলো
class Block:
    def __init__(self, index, previous_hash, timestamp, data, nonce=0):
        self.index = index
        self.previous_hash = previous_hash
        self.timestamp = timestamp
        self.data = data
        self.nonce = nonce
        self.hash = self.calculate_hash()

    # ব্লকের hash হিসাব করার ফাংশন
    def calculate_hash(self):
        block_data = (str(self.index) + str(self.previous_hash) +
                      str(self.timestamp) + str(self.data) + str(self.nonce))
        return hashlib.sha256(block_data.encode()).hexdigest()

    # প্রুফ অফ ওয়ার্ক ফাংশন
    def mine_block(self, difficulty):
        # টার্গেট ভ্যালু difficulty অনুযায়ী সেট করা হচ্ছে
        target = "0" * difficulty
        while self.hash[:difficulty] != target:
            self.nonce += 1
            self.hash = self.calculate_hash()
        print(f"Block mined: {self.hash}")

# ব্লকচেইন ডিফাইন করার জন্য একটি ক্লাস তৈরি করা হলো
class Blockchain:
    def __init__(self):
        self.chain = [self.create_genesis_block()]
        self.difficulty = 4

    # জেনেসিস ব্লক তৈরি করার ফাংশন
    def create_genesis_block(self):
        return Block(0, "0", datetime.datetime.now(), "Genesis Block")

    # চেইনে নতুন ব্লক যোগ করার ফাংশন
    def add_block(self, new_block):
        new_block.previous_hash = self.chain[-1].hash
        new_block.mine_block(self.difficulty)
        self.chain.append(new_block)

    # ব্লকচেইন প্রিন্ট করার ফাংশন
    def display_chain(self):
        for block in self.chain:
            print(f"Index: {block.index}")
            print(f"Timestamp: {block.timestamp}")
            print(f"Data: {block.data}")
            print(f"Hash: {block.hash}")
            print(f"Previous Hash: {block.previous_hash}\n")

# মেইন ফাংশন
if __name__ == "__main__":
    # ব্লকচেইন তৈরি করা হচ্ছে
    blockchain = Blockchain()

    # নতুন ব্লক যোগ করা হচ্ছে
    blockchain.add_block(Block(1, "", datetime.datetime.now(), "Block 1 Data"))
    blockchain.add_block(Block(2, "", datetime.datetime.now(), "Block 2 Data"))
    blockchain.add_block(Block(3, "", datetime.datetime.now(), "Block 3 Data"))

    # ব্লকচেইন দেখানো হচ্ছে
    blockchain.display_chain()

কোডের ব্যাখ্যা

Block ক্লাস:

  • প্রতিটি ব্লকের জন্য এই ক্লাস তৈরি করা হয়েছে। ব্লকটিতে index, previous_hash, timestamp, data, nonce এবং hash অন্তর্ভুক্ত থাকে।
  • calculate_hash() মেথড ব্লকের hash হিসাব করে এবং mine_block() মেথড ব্লক মাইন করে (Proof of Work পদ্ধতি ব্যবহার করে)।

Blockchain ক্লাস:

  • এটি একটি blockchain তৈরি করে এবং একটি জেনেসিস ব্লক (প্রথম ব্লক) তৈরি করে।
  • add_block() মেথড নতুন ব্লক যোগ করে এবং পূর্বের ব্লকের hash নিয়ে ব্লকের চেইন তৈরি করে।
  • display_chain() মেথড সম্পূর্ণ ব্লকচেইন প্রদর্শন করে।

Main Function:

  • এখানে একটি blockchain instance তৈরি করা হয় এবং ব্লক যোগ করা হয়। শেষে পুরো blockchain প্রদর্শন করা হয়।

কোড আউটপুট

কোডটি রান করার পর আপনি এমন একটি আউটপুট পাবেন যেখানে প্রতিটি ব্লকের তথ্য প্রদর্শিত হবে, যেমন:

Index: 0
Timestamp: 2024-10-22 12:00:00.000000
Data: Genesis Block
Hash: [জেনেসিস ব্লকের হ্যাশ]
Previous Hash: 0

Index: 1
Timestamp: 2024-10-22 12:01:00.000000
Data: Block 1 Data
Hash: [ব্লক ১ এর হ্যাশ]
Previous Hash: [জেনেসিস ব্লকের হ্যাশ]

... (অন্যান্য ব্লকগুলো)
Content added By
Promotion